﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace BelDecor.Net.Pages
{
    public partial class ContasPagar : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                ValidaSeguranca("ContasPagar");
                PopuladdlTipoConta();
            }

        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            pnlIncluirEditar.Visible = true;
            txtNumeroContaPagar.Text = Domain.Util.Util.Numerador("NumeroContaPagar");
            pnlConsulta.Visible = false;
            pnlGridBusca.Visible = false;
        }


        void PopulaContasPagar(bool rebind = false)
        {
            grdContas.DataSource = Domain.Model.VwContasAPagar.All().Where(c =>
                                                                   (txtDataInicial.SelectedDate.HasValue ? c.Data_Vencimento >= txtDataInicial.SelectedDate : true)
                                                                   && (txtDataFinal.SelectedDate.HasValue ? c.Data_Vencimento <= txtDataFinal.SelectedDate : true)
                                                                   && (txtNumeroConta.Value.HasValue ? c.Numero_Conta == txtNumeroConta.Value : true)
                                                                   && (ckbConsultaPagamentoEfetuado.Checked ? c.PagamentoEfetuado == "Sim" : true)
                                                                   ).ToList();

            if (!rebind) grdContas.DataBind();

            pnlGridBusca.Visible = true;


        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            PopulaContasPagar();

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {

        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            Domain.Model.ContaPagar ctPagar = null;

            int idConta = 0;

            if (btnSalvar.CommandArgument != "")
            {
                idConta = int.Parse(btnSalvar.CommandArgument);
            }

            ctPagar = Domain.Model.ContaPagar.SingleOrDefault(c => c.Id_ContaPagar == idConta);

            setContaPagar(ref ctPagar);

            ctPagar.Save();

            LimparTela();
            PopulaContasPagar();
            RadWindowManager1.RadAlert("Conta cadastrada com sucesso.", 0, 0, "Sucesso", "");
            pnlConsulta.Visible = true;
            pnlGridBusca.Visible = true;
        }

        void setContaPagar(ref Domain.Model.ContaPagar ctPagar)
        {
            if (ctPagar == null) ctPagar = new Domain.Model.ContaPagar();

            ctPagar.Numero_Conta = int.Parse(txtNumeroContaPagar.Text);
            ctPagar.Favorecido_Cedente = txtFavorecido.Text;
            ctPagar.Valor_Conta = (decimal)txtValor.Value;
            ctPagar.Data_Vencimento = (DateTime)txtDataVencimento.SelectedDate;
            ctPagar.Observacoes = txtObs.Text;
            ctPagar.PagamentoEfetuado = ckbPagamentoEfetuado.Checked;

            if (ddlTipoConta.SelectedValue != "0")
            {
                ctPagar.idTipo = int.Parse(ddlTipoConta.SelectedValue);
            }
            else
            {
                ctPagar.idTipo = null;
            }
        }

        void getContaPagar(Domain.Model.ContaPagar ctPagar)
        {
            if (ctPagar == null) return;

            txtNumeroContaPagar.Text = ctPagar.Numero_Conta.ToString();
            txtFavorecido.Text = ctPagar.Favorecido_Cedente;
            txtValor.Value = (double)ctPagar.Valor_Conta;
            txtDataVencimento.SelectedDate = ctPagar.Data_Vencimento;
            txtObs.Text = ctPagar.Observacoes;
            ckbPagamentoEfetuado.Checked = (bool)ctPagar.PagamentoEfetuado;

            if (ctPagar.idTipo != null)
            {
                ddlTipoConta.SelectedValue = ctPagar.idTipo.ToString();
            }
            else
            {
                ddlTipoConta.SelectedValue = "0";
            }

            if (ctPagar.Id_ContaPagar > 0)
            {
                btnSalvar.CommandArgument = ctPagar.Id_ContaPagar.ToString();
            }
        }


        void LimparTela()
        {

            pnlIncluirEditar.Visible = false;
            txtNumeroContaPagar.Text = string.Empty;
            txtFavorecido.Text = string.Empty;
            txtDataVencimento.Text = string.Empty;
            txtValor.Text = string.Empty;
            txtObs.Text = string.Empty;
            ckbPagamentoEfetuado.Checked = false;
            btnSalvar.CommandArgument = "";
        }


        void PopuladdlTipoConta()
        {
            var lstTipoConta = Domain.Model.TipoConta.All().ToList();

            ddlTipoConta.Items.Add(new ListItem("Selecione", "0"));

            for (int i = 0; i < lstTipoConta.Count; i++)
            {
                ddlTipoConta.Items.Add(new ListItem(lstTipoConta[i].Descricao, lstTipoConta[i].idTipoConta.ToString()));
            }
        }

        protected void grdContas_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
        {
            if (e.CommandName == "Editar")
            {
                int idContaPagar = int.Parse(e.CommandArgument.ToString());

                var Conta = Domain.Model.ContaPagar.SingleOrDefault(a => a.Id_ContaPagar == idContaPagar);
                getContaPagar(Conta);
                pnlIncluirEditar.Visible = true;
            }
            else if (e.CommandName == "Excluir")
            {

                int idContaPagar = int.Parse(e.CommandArgument.ToString());
                Domain.Model.ContaPagar.Delete(c => c.Id_ContaPagar == idContaPagar);
                PopulaContasPagar();
                RadWindowManager1.RadAlert("Conta excluída com sucesso.", 0, 0, "Sucesso", "");
            }

            if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToExcelCommandName ||
             e.CommandName == Telerik.Web.UI.RadGrid.ExportToWordCommandName ||
             e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName)
            {
                ConfigureExportgrd();
            }
        }



        public void ConfigureExportgrd()
        {
            grdContas.ExportSettings.ExportOnlyData = true;
            grdContas.ExportSettings.IgnorePaging = true;
            grdContas.ExportSettings.OpenInNewWindow = true;
            grdContas.ExportSettings.FileName = string.Format("ContasAPagar_{0}", DateTime.Now.Ticks);
        }
    }
}